package com.stack.knowyoudao.dao;

import com.stack.knowyoubean.bean.User;
import org.apache.ibatis.annotations.*;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;

/**
 * user表对应的持久层操作接口
 * 开启mybatis的二级缓存,mapper级别的缓存CacheNamespace
 *
 * @author stack
 */
@Repository("userDao")
@Scope("singleton")
@CacheNamespace
public interface UserDao {

    /**
     * 根据邮箱查询用户信息
     *
     * @param email 邮箱
     * @return user 用户实体
     */
    @Select("select * from user where email=#{email}")
    User findUserByEmail(@Param("email") String email);

    /**
     * 根据账号返回用户信息
     *
     * @param userid 账号
     * @return Teacher 用户实体
     */
    @Select("select * from user where userid=#{userid} ")
    User findUserById(@Param("userid") Integer userid);

    /**
     * 更新用户信息（角色字段不能被更改）
     *
     * @param user 用户信息
     * @return int 更新是否成功
     */
    @Update("update user set username=#{username},password=#{password},tel=#{tel},qq=#{qq},avatar=#{avatar} where userid=#{userid}")
    int updateUser(User user);

    /**
     * 用户注册
     *
     * @param user 用户信息
     * @return 注册标记
     */
    @Insert("insert into user(userid,password,email,role) values(#{userid},#{password},#{email},#{role}) ")
    int insertUser(User user);

}
